#pragma once

#include "Module.h"
#include "World.h"
#include "Settings.h"
#include "Cursor.h"
#include "Camera.h"

class GameModule : 	public Module
{
public:
	GameModule(void);
	GameModule(const std::string& filename);
	~GameModule(void);
	void LoadSettings(const std::string& filename) { m_settings.Load(filename); }
	Settings& GetSettings() { return m_settings; }
protected:
	void OnLoad();
	void OnLoop(float diff);
	void OnFrame(float diff) {}
	void OnClose();
	virtual void SetWindow(sf::RenderWindow* window) { m_window = window; m_world.SetWindow(window); }

private:
	World m_world;
	Settings m_settings;
	Camera m_camera;
	Cursor cursor;
};
